# -*- coding: utf-8 -*-
"""
name: 案例4 使用ui文件布局，使用信号在多窗口间传递数据
version: 1.1
"""
import sys

from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QWidget, QApplication

from ui.ui_example40 import Ui_brower
from ui.ui_example41 import Ui_EditForm


class Brower(QWidget):

    def __init__(self, parent=None):
        super().__init__(parent=parent)
        self.ui = Ui_brower()
        self.ui.setupUi(self)
        # 属性edit用于保存子界面对象
        self.edit = None

    def on_pushButton_open_released(self):
        # 创建子界面
        self.edit = EditForm()
        # 使用自定义信号，当子界面edit_data信号发射时，
        # 将信号传递的数据，使用textEdit的append函数添加到其内容尾部
        self.edit.edit_data.connect(self.ui.textEdit.append)
        self.edit.show()


class EditForm(QWidget):
    # 自定义信号，当点击界面保存按钮时，发送编辑的数据
    edit_data = pyqtSignal(str)

    def __init__(self, parent=None):
        super().__init__(parent=parent)
        self.ui = Ui_EditForm()
        self.ui.setupUi(self)

    def on_pushButton_pressed(self):
        # 发射信号，点击按钮时触发, 保存数据
        self.edit_data.emit(self.ui.textEdit.toPlainText())
        self.ui.textEdit.clear()
        # 保存完毕后自动关闭编辑窗口
        self.close()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = Brower()
    form.show()
    sys.exit(app.exec_())
